package com.lagou.QuestionsSystem;

import com.lagou.client.ClientInitClose;
import com.lagou.client.ClientScanner;
import com.lagou.model.Question;
import com.lagou.model.User;

import java.io.IOException;

public class QuzManageSysView {

    /**
     * 合成复用原则
     */
    private ClientInitClose cic;

    /**
     * 通过构造方法实现成员变量的初始化
     * @param
     */
    public QuzManageSysView(ClientInitClose cic){
        this.cic = cic;
    }

    public void manageMainPage() throws IOException, ClassNotFoundException {

        //打印管理系统界面并提示输入对应数字
        //boolean类型变量boo作为控制循环条件，即系统的开关
        boolean boo = true;
        while (boo) {
            System.out.println("\n\n      欢迎进入考题管理系统");
            System.out.println("-----------------------------------------");
            System.out.println("  [1]增加考题           [2]查找考题");
            System.out.println("  [3]修改考题           [4]删除考题");
            System.out.println("            [5]退出系统             ");
            System.out.println("-----------------------------------------");

            System.out.println("请输入对应功能编号：");
            int choose = ClientScanner.getScanner().nextInt();
            //使用switc case结构使用不同方法，对应不同功能
            switch (choose) {
                case 1:
                    cic.getPs().println("addQuz");
                    addQuz();
                    break;
                case 2:
                    cic.getPs().println("foundQuz");
                    foundQuz();
                    break;
                case 3:
                    cic.getPs().println("setQuz");
                    setQuz();
                    break;
                case 4:
                    cic.getPs().println("delQuz");
                    delQuz();
                    break;
                case 5:
                    //退出系统
                    cic.getPs().println("exit");
                    boo = false;
                    break;
                default:
                    System.out.println("输入错误，请重新选择");
            }
        }
    }


    /**
     * 自定义成员方法实现添加功能
     */
    public void addQuz() throws IOException {

        //提示输入考题信息
        System.out.println("请输入需要添加的考题");
        String title = ClientScanner.getScanner().next();
        //输入选项
        System.out.println("请输入选项A");
        String optionA = "A. " + ClientScanner.getScanner().next();
        System.out.println("请输入选项B");
        String optionB = "B. " + ClientScanner.getScanner().next();
        System.out.println("请输入选项C");
        String optionC = "C. " + ClientScanner.getScanner().next();
        System.out.println("请输入选项D");
        String optionD = "D. " + ClientScanner.getScanner().next();
        //声明一个String类型数组，放入考题选项
        String[] option = {optionA, optionB, optionC, optionD};
        //输入正确答案
        while(true) {
            System.out.println("请输入正确答案");
            String answer = ClientScanner.getScanner().next();
            //如果答案不为A,B,C,D其中一个，则提示重新输入
            if(answer.equalsIgnoreCase("A") || answer.equalsIgnoreCase("B") || answer.equalsIgnoreCase("C") || answer.equalsIgnoreCase("D")){
                //利用输入的信息构造Question对象
                Question question = new Question(title, option, answer);
                //发送到服务器判断
                cic.getOos().writeObject(question);
                break;
            }else {
                System.out.println("答案不合理，请重新输入");
            }
        }
        //接收服务器返回信息并打印对应提示信息
        String s = cic.getBr().readLine();
        if("success".equals(s)){
            System.out.println("添加成功");
        }else if("fail".equals(s)){
            System.out.println("添加失败，请重试");
        }
    }


    /**
     * 自定义成员方法实现查找功能
     */
    public void foundQuz() throws IOException, ClassNotFoundException {

        //提示输入考题信息
        System.out.println("请输入需要查找的考题");
        String title = ClientScanner.getScanner().next();
        //发送到服务器判断
        cic.getPs().println(title);

        //接收服务器返回信息并打印对应提示信息
        String s = cic.getBr().readLine();
        if ("success".equals(s)) {
            //通过对象输入流获取对象信息并打印
            Question question = (Question) cic.getOis().readObject();
            System.out.println("查找到的考题为：" + question);
        } else if ("fail".equals(s)) {
            System.out.println("找不到考题");
        }
    }


    /**
     * 自定义成员方法实现修改功能
     */
    public void setQuz() throws IOException {
        //提示输入考题信息
        System.out.println("请输入需要修改的考题");
        String title = ClientScanner.getScanner().next();
        //发送到服务器判断是否有相同考题
        cic.getPs().println(title);
        //接收服务器返回信息并打印对应提示信息
        String s = cic.getBr().readLine();
        if ("success".equals(s)) {
            System.out.println("请输入修改后的考题");
            String title1 = ClientScanner.getScanner().next();
            System.out.println("请输入修改后的选项A");
            String optionA = "A. " + ClientScanner.getScanner().next();
            System.out.println("请输入修改后的选项B");
            String optionB = "B. " + ClientScanner.getScanner().next();
            System.out.println("请输入修改后的选项C");
            String optionC = "C. " + ClientScanner.getScanner().next();
            System.out.println("请输入修改后的选项D");
            String optionD = "D. " + ClientScanner.getScanner().next();
            //声明一个String类型数组，放入考题选项
            String[] option = {optionA, optionB, optionC, optionD};
            //输入正确答案
            while(true) {
                System.out.println("请输入正确答案");
                String answer = ClientScanner.getScanner().next();
                //如果答案不为A,B,C,D其中一个，则提示重新输入
                if(answer.equalsIgnoreCase("A") || answer.equalsIgnoreCase("B") || answer.equalsIgnoreCase("C") || answer.equalsIgnoreCase("D")){
                    //利用输入的信息构造Question对象
                    Question question = new Question(title1, option, answer);
                    //发送到服务器判断
                    cic.getOos().writeObject(question);
                    break;
                }else {
                    System.out.println("答案不合理，请重新输入");
                }
            }
            System.out.println("修改成功");
        } else if ("fail".equals(s)) {
            System.out.println("找不到考题");
        }
    }

    /**
     * 自定义成员方法实现删除功能
     */
    public void delQuz() throws IOException {

        //提示输入考题信息
        System.out.println("请输入需要查找的考题");
        String title = ClientScanner.getScanner().next();
        //发送到服务器判断
        cic.getPs().println(title);

        //接收服务器返回信息并打印对应提示信息
        String s = cic.getBr().readLine();
        if ("success".equals(s)) {
            System.out.println("考题删除成功");
        } else if ("fail".equals(s)) {
            System.out.println("找不到考题");
        }
    }
}
